﻿using Renci.Data.Interop.OpenGIS.Xlink;

namespace Renci.Data.Interop.OpenGIS.Gml_32
{
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.opengis.net/gml/3.2")]
    [System.Xml.Serialization.XmlRootAttribute("sourceCRS", Namespace = "http://www.opengis.net/gml/3.2", IsNullable = false)]
    public class CRSPropertyType : IAssociationAttributeGroup
    {
        /// <remarks/>
        //[System.Xml.Serialization.XmlElementAttribute("AbstractCRS")]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractSingleCRS", Type = typeof(AbstractCRSType))]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractGeneralDerivedCRS", Type = typeof(AbstractGeneralDerivedCRSType))]
        [System.Xml.Serialization.XmlElementAttribute("ProjectedCRS", Type = typeof(ProjectedCRSType))]
        [System.Xml.Serialization.XmlElementAttribute("DerivedCRS", Type = typeof(DerivedCRSType))]
        [System.Xml.Serialization.XmlElementAttribute("GeodeticCRS", Type = typeof(GeodeticCRSType))]
        [System.Xml.Serialization.XmlElementAttribute("VerticalCRS", Type = typeof(VerticalCRSType))]
        [System.Xml.Serialization.XmlElementAttribute("EngineeringCRS", Type = typeof(EngineeringCRSType))]
        [System.Xml.Serialization.XmlElementAttribute("ImageCRS", Type = typeof(ImageCRSType))]
        [System.Xml.Serialization.XmlElementAttribute("TemporalCRS", Type = typeof(TemporalCRSType))]
        [System.Xml.Serialization.XmlElementAttribute("GeographicCRS", Type = typeof(GeographicCRSType))]
        [System.Xml.Serialization.XmlElementAttribute("GeocentricCRS", Type = typeof(GeocentricCRSType))]
        [System.Xml.Serialization.XmlElementAttribute("CompoundCRS", Type = typeof(CompoundCRSType))]
        public AbstractCRSType Crs { get; set; }

        #region IAssociationAttributeGroup Members

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("nilReason", Namespace = "http://www.opengis.net/gml/3.2")]
        public string NilReason { get; set; }

        /// <summary>
        /// Gets or sets a reference to an XML Schema fragment that specifies the content model of the propertys value. This is in conformance with the XML Schema Section 4.14 Referencing Schemas from Elsewhere.
        /// </summary>
        [System.Xml.Serialization.XmlAttributeAttribute("remoteSchema", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.opengis.net/gml/3.2", DataType = "anyURI")]
        public string RemoteSchema { get; set; }

        #endregion

        #region ISimpleLink Members

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("type", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink")]
        public string Type { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("href", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink", DataType = "anyURI")]
        public string Href { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("role", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink", DataType = "anyURI")]
        public string Role { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("arcrole", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink", DataType = "anyURI")]
        public string ArcRole { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("title", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink")]
        public string Title { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("show", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink")]
        public MetadataTypeShow Show { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool ShowSpecified { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("actuate", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink")]
        public MetadataTypeActuate Actuate { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool ActuateSpecified { get; set; }

        #endregion   
    }
}
